package kau.dao;

import java.util.ArrayList;

import kau.exception.DuplicationException;
import kau.exception.RecordNotFoundException;
import kau.vo.Customer;

public interface CustomerDAOIF {
	public abstract void insert(Customer customer) throws DuplicationException;;

	public abstract void update(Customer customer)
			throws RecordNotFoundException;;

	public abstract void update_cust(String custId, String custEmail,
			String phoneNumber,
			String passwordQuestion, String passwordAnswer)
			throws RecordNotFoundException;

	public abstract void update_pass(String custId, String password)
			throws RecordNotFoundException;

	public abstract void delete(String custId, String password)
			throws RecordNotFoundException;;

	public abstract Customer getCustomer(String custId)
			throws RecordNotFoundException;;

	public abstract ArrayList<Customer> getAllCustomers();
	public abstract ArrayList<Customer> getCustomerList(int custLevel);
	
	public abstract boolean loginCheck(String custId, String password);

	public abstract boolean loginIDCheck(String custId);

	// lookForCustId 아이디찾기
	public abstract String lookForCustId(String name, String ssn)
			throws RecordNotFoundException;

	// 패스워드찾기 // 1. 아이디입력 후 찾기버튼 누르면 패스워드 질문을 가져온다.
	// 2. 질문이 출력되고 답을 적어 id와 질문을 함께 보낸다.
	// 3. 패스워드가 리턴
	// getPasswordQuestion 패스워드질문 가져오기
	public abstract String getPasswordQuestion(String custId)
			throws RecordNotFoundException;

	// lookForPassword 해당 아이디와 질문의 답이 일치하는 지
	public abstract String lookForPassword(String custId,
			String passwordQuestion, String passwordAnswer)
			throws RecordNotFoundException;

	public abstract void update_cust_admin(Customer customer) throws RecordNotFoundException;	
	
	// 등급이 지정되지않은 회원 리스트를 받아옴
	public abstract ArrayList<Customer> noPermissionCustList();
	// 등급이 지정되있는 회원 리스트를 받아옴
	public abstract ArrayList<Customer> permissionCustList(int custLevel);
	public abstract ArrayList<Customer> AllPermissionCustList();
	
	//update_custPermission(등급업데이트)
	public abstract void update_custPermission(String custId, int custLevel) throws RecordNotFoundException;
}
